package com.alks.function.mapper;

import com.alks.function.data.dto.*;
import com.alks.function.data.request.FormingFeedingRequest;
import com.alks.function.data.vo.produce.ReportMonthVo;
import org.apache.ibatis.annotations.Param;
import org.mapstruct.Mapper;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

@Mapper
public interface FormingProductionMapper {

    /**
     * 查询指令投产信息
     *
     * @param lotNo
     * @param style
     * @param companyId
     * @return
     */
    List<FormingProductionDto> getStyleDetails(@Param("lotNo") String lotNo, @Param("style") String style, @Param("companyId") String companyId);

    /**
     * 查询投产量总数
     *
     * @param lotNo
     * @param style
     * @param companyId
     * @return
     */
    PcLotHeadCountDto getCount(@Param("lotNo")String lotNo, @Param("style") String style, @Param("companyId") String companyId);

    /**
     * 查询号码明细
     *
     * @param lotNo
     * @param companyId
     * @return
     */
    List<FormingProductionNumDto> getNumberDetails(@Param("lotNo") String lotNo, @Param("companyId") String companyId);

    /**
     * 查询号码明细总数
     *
     * @param lotNo
     * @param companyId
     * @return
     */
    FormingProductionCountDto getNumberDetailsCount(@Param("lotNo") String lotNo, @Param("companyId") String companyId);

    /**
     * 查询指令投料明细
     *
     * @param lotNo
     * @param companyId
     * @return
     */
    List<PcLastCollectDetailDto> getThrowDetails(@Param("lotNo") String lotNo, @Param("companyId") String companyId);
    List<PcLastCollectDetailDto> getThrowDetails2(@Param("lotNo") String lotNo, @Param("companyId") String companyId);

    /**
     * 查询指令投料明细数量
     *
     * @param lotNo
     * @param companyId
     * @return
     */
    Integer getThrowCount(@Param("lotNo") String lotNo, @Param("companyId") String companyId);

    /**
     * 查询指令产料明细
     *
     * @param lotNo
     * @param companyId
     * @return
     */
    List<PcLastCollectDetailDto>  getProductionDetails(@Param("lotNo") String lotNo, @Param("companyId") String companyId);
    List<PcLastCollectDetailDto>  getProductionDetails2(@Param("lotNo") String lotNo, @Param("companyId") String companyId);

    /**
     * 查询指令产料明细数量
     *
     * @param lotNo
     * @param companyId
     * @return
     */
    Integer getProductionCount(@Param("lotNo") String lotNo, @Param("companyId") String companyId);

    /**
     * 查询线别
     * @return
     */
    List<String> getLineDetails(String companyId);

    /**
     * 查询成型投料明细
     * @param request
     * @return
     */
    List<FormingFeedingDto> getFormingFeedingDetails(FormingFeedingRequest request);

    /**
     * 查询订单数量
     *
     * @param lotNo
     * @param companyId
     * @return
     */
    BigDecimal getOrderNumCount(@Param("lotNo") String lotNo, @Param("companyId") String companyId);

    /**
     * 查询成型投料明细当日投料总数
     * @param request
     * @return
     */
    BigDecimal getFeedingDetailsCount(FormingFeedingRequest request);

    /**
     * 查询成型产出明细
     * @param request
     * @return
     */
    List<FormingFeedingDto> getFormingOutputDetails(FormingFeedingRequest request);

    /**
     * 查询成型产出明细
     * @param request
     * @return
     */
    Integer getFormingOutputDetailsCount(FormingFeedingRequest request);

    /**
     * 查询成型产出当日产出数量
     * @param request
     * @return
     */
    BigDecimal getOutputDetailsCount(FormingFeedingRequest request);

    /**
     * 导出日报表
     * @param startTime
     * @param companyId
     * @return
     */
    List<FormingFeedingDayDto> exportDailyReport(@Param("startTime") Date startTime, @Param("companyId") String companyId);

    /**
     * 查询月报表数据
     * @param startTime
     * @param companyId
     * @return
     */
    List<ReportMonthVo> getMonthlyReport(@Param("startTime") Date startTime, @Param("companyId") String companyId);

    /**
     * 查询月报表数据2
     * @param startTime
     * @param companyId
     * @return
     */
    List<ReportMonthVo> getMonthlyReport2(@Param("startTime") Date startTime, @Param("companyId") String companyId);
}
